import 'package:flutter/material.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'TextScaler Demo',
      theme: ThemeData(primarySwatch: Colors.blue),
      home: const TextScalerScreen(),
    );
  }
}

class TextScalerScreen extends StatefulWidget {
  const TextScalerScreen({super.key});

  @override
  State<TextScalerScreen> createState() => _TextScalerScreenState();
}

class _TextScalerScreenState extends State<TextScalerScreen> with WidgetsBindingObserver {

  @override
  void initState() {
    super.initState();
    // 注册观察者以监听系统设置的变化
    WidgetsBinding.instance.addObserver(this);
  }

  @override
  void dispose() {
    // 移除观察者
    WidgetsBinding.instance.removeObserver(this);
    super.dispose();
  }

  @override
  void didChangeAccessibilityFeatures() {
    // 当可访问性特性发生变化时调用，包括文本缩放因子的变化
    setState(() {});
  }

  @override
  Widget build(BuildContext context) {
    double scale = MediaQuery.of(context).textScaleFactor;
    final textScaler = TextScaler.linear(scale);
    
    // 使用 TextScaler 来调整文本大小
    return Scaffold(
      appBar: AppBar(
        title: const Text('TextScaler Demo'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Text(
              '当前文本缩放比例为: ${textScaler.toString()}',
              style: TextStyle(fontSize: textScaler.scale(16)),
            ),
            const SizedBox(height: 20),
            Text(
              '这是一个跟随系统文本缩放比例变化的示例文本。',
              style: TextStyle(fontSize:  textScaler.scale(24)),
            ),
          ],
        ),
      ),
    );
  }
}